<pre class='metadata'>
Title: Linear PCM WebCodecs Registration
Repository: w3c/webcodecs
Status: NOTE-ED
Shortname: webcodecs-pcm-codec-registration
Level: none
Group: mediawg
ED: https://w3c.github.io/webcodecs/pcm_codec_registration.html
TR: https://www.w3.org/TR/webcodecs-pcm-codec-registration/
Editor: Paul Adenot, w3cid 62410, Mozilla https://www.mozilla.org/
Editor: Eugene Zemtsov, w3cid 139375, Google LLC https://www.google.com/
Former Editor: Bernard Aboba, w3cid 65611, Microsoft Corporation https://www.microsoft.com/
Former Editor: Chris Cunningham, w3cid 114832, Google Inc. https://www.google.com/

Abstract: This registration is entered into the [[webcodecs-codec-registry]].
    It describes, for Linear PCM, the (1) fully qualified [[WEBCODECS#config-codec-string|codec strings]],
    (2) the codec-specific {{EncodedAudioChunk}}
    {{EncodedAudioChunk/[[internal data]]}} bytes, (3) the
    {{AudioDecoderConfig/description|AudioDecoderConfig.description}}, and
    (4) the values of {{EncodedAudioChunk}} {{EncodedAudioChunk/[[type]]}}.

    Linear PCM is the [[webcodecs#audio-sample-formats|raw audio format]] used
    in WebCodecs and does not require decoding. The motivation for registering
    the Linear PCM codec is to enable passthrough "decoding" of PCM content as
    an architectural simpliciation for WebCodecs applications.

    The registration is not intended to include any information on whether a
    codec format is encumbered by intellectual property claims. Implementers and
    authors are advised to seek appropriate legal counsel in this matter if they
    intend to implement or use a specific codec format.

    This registration is non-normative.

Markup Shorthands:css no, markdown yes, dfn yes
!Participate: <a href="https://github.com/w3c/webcodecs">Git Repository.</a>
!Participate: <a href="https://github.com/w3c/webcodecs/issues/new">File an issue.</a>
!Version History: <a href="https://github.com/w3c/webcodecs/commits">https://github.com/w3c/webcodecs/commits</a>
</pre>

<pre class='anchors'>
spec: WEBCODECS; urlPrefix: https://w3c.github.io/webcodecs/#
    type: dfn
        text: interleaved; url: interleaved
spec: WEBCODECS; urlPrefix: https://w3c.github.io/webcodecs/#
    type: dfn
        text: samples; url: sample
</pre>


Fully qualified codec strings {#fully-qualified-codec-strings}
==============================================================

This [[WEBCODECS#config-codec-string|codec string]] begins with the prefix "pcm-", followed by a suffix that
indicates the sample format. The complete list of [[WEBCODECS#config-codec-string|codec strings]] and associated
formats is as follows.

* pcm-u8, using format {{u8}}
* pcm-s16, using format {{s16}}
* pcm-s24, using three [[WEBIDL#idl-octet|byte]] (24-bit) [=samples=] with
    [=interleaved=] [[webcodecs#audio-buffer-arrangement|channel arrangement]].
* pcm-s32, using format {{s32}}
* pcm-f32, using format {{f32}}

NOTE: [[WEBCODECS]] does not define a 24-bit {{AudioSampleFormat}}. 24-bit
    samples are permitted within an {{EncodedAudioChunk}}, but such samples will
    be "decoded" in {{AudioData}} objects as either {{s32}} of {{f32}}. Please
    see [[WEBCODECS#audio-samples-magnitude]] for additional details.

EncodedAudioChunk data {#encodedaudiochunk-data}
================================================

Linear pulse code modulation (linear PCM) describes a format where the audio
values are sampled at a regular interval, and where the quantization levels
between two successive values are linearly uniform.

{{EncodedAudioChunk}} {{EncodedAudioChunk/[[internal data]]}} is expected to be
a sequence of bytes of arbitrary length, with a [=sample=] occurring every N
bits, where N is defined by the [[WEBCODECS#config-codec-string|codec string]]. For multichannel PCM, [=samples=]
from different channels are [=interleaved=].


AudioDecoderConfig description {#audiodecoderconfig-description}
================================================================

The {{AudioDecoderConfig/description}} is expected to be omitted from the
{{AudioDecoderConfig}}.

EncodedAudioChunk type {#encodedaudiochunk-type}
================================================

The {{EncodedAudioChunk/[[type]]}} for an {{EncodedAudioChunk}} containing
Linear PCM is always "{{EncodedAudioChunkType/key}}".

Privacy Considerations {#privacy-considerations}
==========================================================================

Please refer to the section [[WEBCODECS#privacy-considerations|Privacy
Considerations]] in [[WEBCODECS]].

Security Considerations {#security-considerations}
==========================================================================

Please refer to the section [[WEBCODECS#security-considerations|Security
Considerations]] in [[WEBCODECS]].
